package com.prp.gwt.client.user.mail;

import com.google.gwt.user.client.rpc.AsyncCallback;
import com.prp.gwt.client.vo.MailBoxList;
import com.prp.gwt.client.vo.MailInfo;
import com.prp.gwt.client.vo.MailboxInfo;
import com.prp.gwt.client.vo.NewMail;
import com.prp.gwt.client.vo.User;

public interface MailServiceAsync {
	
	public void signOut(AsyncCallback<Void> callback);
	public void updateUser(AsyncCallback<User> callback);
	public void verify(AsyncCallback<Boolean> callback);
	
	public void getInMailList( AsyncCallback<MailBoxList> callback);
	public void getOutMailList(AsyncCallback<MailBoxList> callback) ;
	public void getMail(int mailId, AsyncCallback<MailInfo> asyncCallback);
	public void deleteInbox(MailboxInfo mailbox, AsyncCallback<MailboxInfo> asyncCallback);
	public void deleteOutbox(MailboxInfo mailbox, AsyncCallback<MailboxInfo> asyncCallback);
	public void sendMail(NewMail mail, AsyncCallback<Integer> asyncCallback);
	
	public  void getInboxMailList(int userId, AsyncCallback<MailBoxList> asyncCallback);
	public  void getOutboxMailList(int userId, AsyncCallback<MailBoxList> asyncCallback);
	public  void getMailboxInfo(int mailboxId, AsyncCallback<MailboxInfo> asyncCallback);
	public  void getMailInfo(int mailboxId, AsyncCallback<MailInfo> asyncCallback);
	
	public void canSendMassMail( AsyncCallback<Boolean> asyncCallback);
	public void sendMassMail(NewMail newMail, AsyncCallback<Integer> asyncCallback);
	public void validateAuth(int identity, AsyncCallback<Void> asyncCallback);
}
